"""
命令执行工具模块。
"""

import os
import subprocess
from .registry import bera


def run_command(command, log_file) -> int:
    """
    执行命令并将输出写入日志文件。
    
    Args:
        command: 要执行的命令
        log_file: 日志文件路径
        
    Returns:
        命令的返回码
    """
    try:
        # 创建日志文件目录
        os.makedirs(os.path.dirname(log_file), exist_ok=True)
        
        # 执行命令并将输出写入日志文件
        with open(log_file, 'w') as f:
            process = subprocess.Popen(
                command,
                shell=True,
                stdout=f,
                stderr=subprocess.STDOUT
            )
            process.wait()
            return process.returncode
    except Exception as e:
        bera.logger.error(f"执行命令失败: {e}")
        return -1

def get_git_hash(dir: str) -> str:
    """
    获取Git仓库的最新提交哈希值。
    
    Args:
        dir: Git仓库目录
        
    Returns:
        最新提交的哈希值
    """
    try:
        # 切换到Git仓库目录
        cwd = os.getcwd()
        os.chdir(dir)
        
        # 执行git命令获取哈希值
        process = subprocess.Popen(
            'git rev-parse HEAD',
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )
        stdout, stderr = process.communicate()
        
        # 切回原目录
        os.chdir(cwd)
        
        if process.returncode == 0:
            return stdout.decode().strip()
        else:
            bera.logger.error(f"获取Git哈希值失败: {stderr.decode()}")
            return '0'
    except Exception as e:
        bera.logger.error(f"获取Git哈希值失败: {e}")
        return '0' 